package com.carmeth.geo;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;

import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;

import com.carmeth.geo.bean.Casa;
import com.carmeth.geo.bean.Direccion;

public class CasaHandler extends DefaultHandler{
	private static final String TAG_CASA = "casa",
			TAG_TITULO = "titulo",
			TAG_DESCRIPCION = "descripcion",
			TAG_DIRECCION = "direccion",
			TAG_CALLE="calle",
			TAG_NUMERO="numero",
			TAG_COLONIA="colonia",
			TAG_ESTADO="estado",
			TAG_LATITUD="latitud",
			TAG_LONGITUD="longitud",
			TAG_PRECIO = "precio",
			TAG_RECAMARAS = "recamaras",
			TAG_IMAGEN = "imagen",
			TAG_BANIOS = "banios",
			TAG_COLOR = "color",
			TAG_CONSTRUCCION = "construccion",
			TAG_SIN_CONSTRUIR = "sin-construir",
			TAG_PISOS = "pisos";
	
	private ArrayList<Casa> casas;
	private Casa casaActual;
	private Direccion direccionActual;
	private String chars;
	private boolean onItem;
	
	public ArrayList<Casa> getCasas(){
		return casas;
	}
	
	@Override
	public void startDocument(){
		onItem = false;
		casas = new ArrayList<Casa>();
	}
	
	@Override
	public void characters(char[] ch, int offset, int len){
		if(onItem){
			chars = new String(ch, offset, len);
		}
	}
	
	@Override
	public void startElement(String uri, String ln, String qName, Attributes attributes){
		if(ln.endsWith(TAG_CASA)){
			onItem = true;
			casaActual = new Casa();
			direccionActual=new Direccion();
		}
	}
	public void endElement(String uri, String ln, String qName){
		if(onItem){
			if(ln.endsWith(TAG_TITULO)){
				casaActual.setTitulo(chars);
			}else if(ln.endsWith(TAG_DESCRIPCION)){
				casaActual.setDescripcion(chars);
			}else if(ln.endsWith(TAG_CALLE)){
				direccionActual.setCalle(chars);
			}else if(ln.endsWith(TAG_NUMERO)){
				direccionActual.setNumero(chars);
			}else if(ln.endsWith(TAG_COLONIA)){
				direccionActual.setColonia(chars);
			}else if(ln.endsWith(TAG_ESTADO)){
				direccionActual.setEstado(chars);
			}else if(ln.endsWith(TAG_LATITUD)){
				direccionActual.setLatitud(BigDecimal.valueOf(Double.parseDouble(chars)));
			}else if(ln.endsWith(TAG_LONGITUD)){
				direccionActual.setLongitud(BigDecimal.valueOf(Double.parseDouble(chars)));
			}else if(ln.endsWith(TAG_DIRECCION)){
				casaActual.setDireccion(direccionActual);
			}else if(ln.endsWith(TAG_PRECIO)){
				casaActual.setPrecio(BigDecimal.valueOf(Double.parseDouble(chars)));
			}else if(ln.endsWith(TAG_RECAMARAS)){
				casaActual.setRecamaras(Integer.valueOf(chars));
			}else if(ln.endsWith(TAG_IMAGEN)){
				casaActual.setImagen(chars);
			}else if(ln.endsWith(TAG_BANIOS)){
				casaActual.setBanios(Integer.valueOf(chars));
			}else if(ln.endsWith(TAG_COLOR)){
				casaActual.setColor(chars);
			}else if(ln.endsWith(TAG_CONSTRUCCION)){
				casaActual.setConstruccion(chars);
			}else if(ln.endsWith(TAG_SIN_CONSTRUIR)){
				casaActual.setSinConstruir(chars);
			}else if(ln.endsWith(TAG_PISOS)){
				casaActual.setPisos(Integer.valueOf(chars));
			}else if(ln.endsWith(TAG_CASA)){
				casas.add(casaActual);
				onItem = false;
			}
		}
	}
}
